package com.xzs.kit.base.service;


import com.xzs.kit.base.model.PageBean;

import java.util.List;
import java.util.Map;

/**
 * @author : Victor.Xiao
 * @date : 2017/12/02 14:28
 * @description :
 */
public interface BaseService<Model> {
    /**
     * @description : 查
     * @author : Victor.Xiao
     * @date : 2017/12/2 15:37
     * @param id id
     * @return
     */
    Model findById(String id);

    /**
     * @description : 查
     * @author : Victor.Xiao
     * @date : 2017/12/2 15:37
     * @param ids id
     * @return
     */
    List<Model> findBatch(List<String> ids);

    /**
     * @description : 改
     * @author : Victor.Xiao
     * @date : 2017/12/2 15:37
     * @param model model
     * @return
     */
    void update(Model model);

    /**
     * @description : 改
     * @author : Victor.Xiao
     * @date : 2017/12/2 15:37
     * @param models model
     * @return
     */
    void updateBatch(List<Model> models);

    /**
     * @description : 增
     * @author : Victor.Xiao
     * @date : 2017/12/2 15:37
     * @param model model
     * @return
     */
    void add(Model model);

    /**
     * @description : 增
     * @author : Victor.Xiao
     * @date : 2017/12/2 15:37
     * @param models model
     * @return
     */
    void addBatch(List<Model> models);

    /**
     * @description :
     * @author : Victor.Xiao
     * @date : 2017/12/2 16:09
     * @param params 参数
     * @param pageNum 页码
     * @param pageSize 大小
     * @return
     */
    PageBean<Model> findByPage(Map<String, Object> params, Integer pageNum, Integer pageSize);

    /**
     * @description :
     * @author : Victor.Xiao
     * @date : 2017/12/2 16:09
     * @param params 参数
     * @param pageNum 页码
     * @param pageSize 大小
     * @param count 是否查询总数
     * @return
     */
    PageBean<Model> findByPage(Map<String, Object> params, Integer pageNum, Integer pageSize, boolean count);

    /**
     * @description : 分页查询
     * @author : Victor.Xiao
     * @date : 2017/12/15 9:47
     * @param pageBean 分页参数
     * @return
     */
    PageBean<Model> findByPage(PageBean<Model> pageBean);

    /**
     * @description : 分页
     * @author : Victor.Xiao
     * @date : 2017/12/2 16:12
     * @param params 参数
     * @param offset 开始条数
     * @param limit 限制条数
     * @return
     */
    PageBean<Model> findByOffset(Map<String, Object> params, Integer offset, Integer limit);

    /**
     * @description : 分页
     * @author : Victor.Xiao
     * @date : 2017/12/2 16:12
     * @param params 参数
     * @param offset 开始条数
     * @param limit 限制条数
     * @param count 总数
     * @return
     */
    PageBean<Model> findByOffset(Map<String, Object> params, Integer offset, Integer limit, boolean count);

    /**
     * @description : 删
     * @author : Victor.Xiao
     * @date : 2017/12/2 15:45
     * @param id
     */
    void deleteById(String id);

    /**
     * @description : 删
     * @author : Victor.Xiao
     * @date : 2017/12/2 15:45
     * @param id
     */
    void deleteBatch(List<String> ids);

    /**
     * @description : 删
     * @author : Victor.Xiao
     * @date : 2017/12/2 15:45
     * @param params params
     */
    void deleteByParam(Map<String, Object> params);


    /**
     * @description : 初始化mapper
     * @author : Victor.Xiao
     * @date : 2017/12/2 16:51
     */
    void initDao();

}
